/*
* ============正则表达式 start============ *
* */
// 只能输入数字和字母
export const numLette = {
  test: /^[A-Za-z0-9]+$/,
  message: '只能输入数字和字母'
}
// 大于等于0的数字
export const greaterThan = {
  test: /^[+]{0,1}(\d+)$/,
  message: '只能输入大于0的数字'
}
// 只能输入数字和字母和$
export const numLettes = {
  test: /^[A-Za-z0-9$]+$/,
  message: '只能输入数字和字母'
}

// 只能输入字母和下划线
export const letterUnderLine = {
  test: /^[a-zA_]{1,}$/,
  message: '只能输入字母和下划线'
}

// 只能输入字母
export const letter = {
  test: /^[a-zA]{1,}$/,
  message: '只能输入字母'
}

// 用户名
export const UserId = {
  test: /\w{2,}/,
  message: '用户名格式有误(最少2位字符)'
}

// 密码
export const Password = {
  test: /\w{6}/,
  message: '密码格式有误(最少6位字符)'
}

// 汉字验证
export const CnStr = {
  test: /^[\u4e00-\u9fa5]+$/,
  message: '请输入中文'
}

// 电话号码
export const telNumer = {
  test: /^(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}$/,
  message: '电话号码格式不正确'
}

// 手机号码
export const mobileNumber = {
  test: /^1[345789]\d{9}$/,
  message: '手机号码格式不正确'
}

// 邮箱
export const email = {
  test: /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/,
  message: '邮箱格式不正确'
}

// 验证数字
export const number = {
  test: /^[0-9]*$/,
  message: '输入有误(请输入数字)'
}

// 验证3位数字
export const threeBits = {
  test: /^\d{1,3}$/,
  message: '输入有误(请输入1到3位数字)'
}

// 验证1位数字
export const oneBits = {
  test: /^\d{1,1}$/,
  message: '输入有误(只能输入1位数字)'
}
// ============正则表达式 end============

/*
* ============验证器内容 start============ *
* */
// 只能输入数字和字母
export const numLetteValidator = (rule, value, callback) => {
  if (numLette.test.test(value)) {
    callback()
  } else {
    callback(new Error(numLette.message))
  }
}
// 只能输入大于0的数字
export const numgreaterThan = (rule, value, callback) => {
  if (greaterThan.test.test(value)) {
    callback()
  } else {
    callback(new Error(greaterThan.message))
  }
}
// 只能输入数字和字母和 $
export const numLetteValidators = (rule, value, callback) => {
  if (numLettes.test.test(value)) {
    callback()
  } else {
    callback(new Error(numLettes.message))
  }
}

// 只能输入字母和下划线
export const letterUnderLineValidators = (rule, value, callback) => {
  if (letterUnderLine.test.test(value)) {
    callback()
  } else {
    callback(new Error(letterUnderLine.message))
  }
}

// 只能输入字母
export const letterValidators = (rule, value, callback) => {
  if (letter.test.test(value)) {
    callback()
  } else {
    callback(new Error(letter.message))
  }
}

// 汉字验证器
export const cnValidator = (rule, value, callback) => {
  if (CnStr.test.test(value)) {
    callback()
  } else {
    callback(new Error(CnStr.message))
  }
}
// 非汉字验证器
export const notCnValidator = (rule, value, callback) => {
  if (!CnStr.test.test(value)) {
    callback()
  } else {
    callback(new Error('不接受汉字输入'))
  }
}
// 基础电话号码验证器
export const telNumberValidator = (rule, value, callback) => {
  if (telNumer.test.test(value)) {
    callback()
  } else {
    callback(new Error(telNumer.message))
  }
}
// 手机号码验证器
export const mobileNumberValidator = (rule, value, callback) => {
  if (mobileNumber.test.test(value)) {
    callback()
  } else {
    callback(new Error(mobileNumber.message))
  }
}

// 邮箱验证器
export const emailValidator = (rule, value, callback) => {
  if (email.test.test(value)) {
    callback()
  } else {
    callback(new Error(email.message))
  }
}
// 数字验证器1位
export const numberValidator = (rule, value, callback) => {
  if (number.test.test(value)) {
    callback()
  } else {
    callback(new Error(number.message))
  }
}
// 数字3位数验证器
export const threeValidator = (rule, value, callback) => {
  if (threeBits.test.test(value)) {
    callback()
  } else {
    callback(new Error(threeBits.message))
  }
}
// 数字1位数验证器
export const oneValidator = (rule, value, callback) => {
  if (oneBits.test.test(value)) {
    callback()
  } else {
    callback(new Error(oneBits.message))
  }
}
// ============验证器内容 end============

// 验证器
export default {
  cnValidator, // 汉字验证器
  notCnValidator, // 非汉字验证器
  telNumberValidator, // 基础电话号码验证器
  mobileNumberValidator, // 手机号码验证器
  emailValidator, // 邮箱验证器
  numgreaterThan, // 大于0的数字
  numberValidator, // 数字验证器
  threeValidator // 数字位数验证器
}
